<?
    class PrincipioLab_Messages
    {
        /**
         * Ошибка уровня работы приложения.
         */
        const ERROR_ALERT = Zend_Log::ALERT;

        /**
         * Ошибка уровня результатов работы приложения
         */
        const ERROR_ERR = Zend_Log::ERR;

        /**
         * Параметр типа ошибки.
         * @var
         */
        public static $error_type;

        /**
         * Массив с сообщениями об ошибке.
         *
         * @var array
         */
        public static $error_list = array();

        /**
         * Параметр наличия ошибки.
         *
         * @var bool
         */
        public static $is_error = false;

        /**
         * Массив с предупреждениями.
         *
         * @var array
         */
        public static $warning_list = array();

        public static $is_warning = false;

        /**
         * Массив с сообщениями.
         *
         * @var array
         */
        public static $message_list = array();

        public static $is_message = false;


        /**
         * warning
         *
         * Помещаем предупреждение в список предупреждений $warning_list.
         *
         * @static
         * @param $warning
         * @return bool
         */
        public static function warning($warning)
        {
            self::$is_warning = true;
            self::$warning_list[] = $warning;
        }


        /**
         * message
         *
         * Помещаем сообщение в список сообщений $message_list.
         *
         * @static
         * @param $message
         * @return bool
         */
        public static function message($message)
        {
            self::$is_message = true;
            self::$message_list[] = $message;
        }


        /**
         * error
         *
         * Помещаем ошибку в список ошибок $error_list, задаём значение параметров наличия и типа ошибки.
         *
         * @static
         * @param $error
         * @param int $type
         * @return bool
         */
        public static function error($error, $type = self::ERROR_ERR)
        {
            self::$is_error = true;
            self::$error_list[] = $error;
            self::errorType($type);
            return false;
        }


        /**
         * Задаём параметр типа ошибки.
         *
         * @static
         * @param $type
         */
        public static function errorType($type)
        {
            if (self::$error_type < $type)
                self::$error_type = $type;
        }


        public static function has()
        {
            return (self::$is_error || self::$is_message || self::$is_warning);
        }
    }
?>